import pandas as pd

# 创建示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 30, 35, 40, 28],
    'City': ['New York', 'London', 'Tokyo', 'Berlin', 'Paris'],
    'Salary': [50000, 70000, 80000, 90000, 60000]
}
df = pd.DataFrame(data)
print("原始DataFrame:")
print(df)
print("\n" + "="*50 + "\n")

# 1. 选择单个元素
print("1. 选择单个元素 (第2行第3列):")
element = df.iloc[1, 2]  # 索引从0开始，所以是第2行第3列
print(element)
print("\n" + "-"*30 + "\n")

# 2. 选择单行
print("2. 选择单行 (第3行):")
single_row = df.iloc[2]  # 选择第3行所有列
print(single_row)
print("\n" + "-"*30 + "\n")

# 3. 选择多行 (切片)
print("3. 选择多行 (第2-4行):")
multiple_rows = df.iloc[1:4]  # 选择第2到第4行（不包含第4行）
print(multiple_rows)
print("\n" + "-"*30 + "\n")

# 4. 选择特定行 (列表索引)
print("4. 选择特定行 (第1行和第3行):")
specific_rows = df.iloc[[0, 2]]  # 选择第1行和第3行
print(specific_rows)
print("\n" + "-"*30 + "\n")

# 5. 选择单列
print("5. 选择单列 (第2列):")
single_column = df.iloc[:, 1]  # 选择所有行的第2列
print(single_column)
print("\n" + "-"*30 + "\n")

# 6. 选择多列
print("6. 选择多列 (第1-3列):")
multiple_columns = df.iloc[:, 0:3]  # 选择所有行的第1到第3列
print(multiple_columns)
print("\n" + "-"*30 + "\n")

# 7. 选择特定行和列的组合
print("7. 选择特定行和列 (第2-4行, 第1-3列):")
subset = df.iloc[1:4, 0:3]  # 选择第2-4行，第1-3列
print(subset)
print("\n" + "-"*30 + "\n")

# 8. 使用步长选择数据
print("8. 使用步长选择 (每隔一行选择):")
step_selection = df.iloc[::2]  # 从第1行开始，每隔一行选择
print(step_selection)
print("\n" + "-"*30 + "\n")

# 9. 选择最后几行
print("9. 选择最后2行:")
last_rows = df.iloc[-2:]  # 选择最后2行
print(last_rows)
print("\n" + "-"*30 + "\n")

# 10. 使用布尔索引（结合条件筛选）
print("10. 选择年龄大于30的行:")
condition = df['Age'] > 30
filtered_data = df.iloc[condition.values]  # 根据条件筛选行
print(filtered_data)
print("\n" + "-"*30 + "\n")

# 11. 修改数据
print("11. 修改数据 (将第1行第2列的值改为100):")
df.iloc[0, 1] = 100  # 修改第1行第2列的值
print("修改后的DataFrame:")
print(df)